Репозиторії та робота з базами даних (@Repository, JPA, Hibernate)

У Spring Boot репозиторії використовуються для взаємодії з базами даних. Найчастіше застосовується Spring Data JPA, яка спрощує роботу з ORM (Object-Relational Mapping) завдяки Hibernate.

1. Анотація @Repository

Анотація @Repository позначає клас, який працює з базою даних. Spring автоматично реєструє такі компоненти.

                
                @Repository
                public interface UserRepository extends JpaRepository {
                    List findByName(String name);
                }
                
            

2. Використання JPA

JPA (Java Persistence API) дозволяє працювати з сутностями бази даних через об'єктно-реляційне відображення (ORM).

                
                @Entity
                @Table(name = "users")
                public class User {
                    @Id
                    @GeneratedValue(strategy = GenerationType.IDENTITY)
                    private Long id;
                    private String name;
                    private String email;
                }
                
            

3. Конфігурація бази даних

Приклад конфігурації для MySQL у application.properties:

                
                spring.datasource.url=jdbc:mysql://localhost:3306/mydb
                spring.datasource.username=root
                spring.datasource.password=pass
                spring.jpa.hibernate.ddl-auto=update
                spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
                
            

4. Використання у сервісному шарі

Репозиторій можна використовувати у сервісі для отримання та збереження даних:

                
                @Service
                public class UserService {
                    private final UserRepository userRepository;
                    
                    public UserService(UserRepository userRepository) {
                        this.userRepository = userRepository;
                    }
                    
                    public List getAllUsers() {
                        return userRepository.findAll();
                    }
                }
                
            

Назад Далі